/**
 * Package:cn.tst.test;
 * $Id: NodeList.java,v 1.1 2008/11/11 08:30:38 yangc Exp $
 * Copyright(c) 2001-2005 www.afteryuan.com
 */
package com.afteryuan.server.support.astar;

import java.util.Vector;

/**
 * NodeList
 * <p/>
 * <p><a href="NodeList.java.html"><i>View Source</i></a></p>
 *
 * @author <a href="mailto:afteryuan@afteryuan.com">$Author: yangc $</a>
 * @version $Revision: 1.1 $
 */
public class NodeList extends Vector {
	/**
	 *
	 */
	private static final long serialVersionUID = 1L;
//	private Vector v=null;
	public NodeList(){
//		v=new Vector();
		super();
	}

	/**
	 * 获得第一个节点（最小的）
	 * @return 第一个节点
	 */
	public Node pop(){
		if (this!=null){
			Node node=(Node)this.elementAt(0);
			this.removeElement(node);
			return node;
		}
		else{
			return null;
		}
	}
	/**
	 * 按照升序添加节点
	 * @param node 被添加的节点
	 */
	public void addNode(Node node){
		if (this.size()==0){
			this.addElement(node);
		}
		else{
			for(int i=0;i<this.size();i++){
				Node temp=(Node)this.elementAt(i);
				if (temp.totalCost>=node.totalCost){
					this.insertElementAt(node,i);
					return;
				}
			}
			this.addElement(node);
		}
	}

	public void sort(){
		if (this.size()==0){
			return;
		}
		else{
			for(int i=0;i<this.size()-1;i++){
				Node first=(Node)this.elementAt(i);
				Node next=(Node)this.elementAt(i+1);
				if (first.totalCost>next.totalCost){
//					Node temp=first;
//					first=next;
//					next=temp;
					this.setElementAt(next,i);
					this.setElementAt(first,i+1);
				}
			}
		}
	}

	public String toString(){
		String s="";
		for(int i=0;i<this.size();i++){
			s+=((Node)this.elementAt(i)).toString()+"\n";
		}
		return s;
	}

}
